home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 / Ham Radio 2000.iso / ham2000 / packet / terminal / top_152 / src152.exe / rar / TOP.PAS < prev    next >
Pascal/Delphi Source File  |  1995-05-16  |  7KB  |  252 lines

  1. {┌─────────────────────────────────────────────────────────────────────────┐}
  2. {│                                                                         │}
  3. {│                              T. O. P.                                   │}
  4. {│                                                                         │}
  5. {│                        (T)he  (O)ther  (P)acket                         │}
  6. {│                                                                         │}
  7. {│  Primaryfile:     T O P . P A S                                         │}
  8. {│                                                                         │}
  9. {│                                                                         │}
  10. {│  TOP ist eine Weiterentwicklung des schon bekannten Terminalprogramms   │}
  11. {│  THP 2.6 von DL1BHO . Es gelten auch hier die gleichen Kriterien wie    │}
  12. {│  bei THP. Das heißt:                                                    │}
  13. {│                                                                         │}
  14. {│  Programm und Quelltexte sind ausdruecklich PUBLIC DOMAIN, koennen also │}
  15. {│  an jeden interessierten Funkamateur zur NICHT-KOMMERZIELLEN NUTZUNG    │}
  16. {│  weitergegeben werden.                                                  │}
  17. {│                                                                         │}
  18. {│                                                                         │}
  19. {│  A C H T U N G :                                                        │}
  20. {│                                                                         │}
  21. {│   Dieses Programm ist ein reines Hobby-Produkt!                         │}
  22. {│                                                                         │}
  23. {│   Für Fehler, insbesondere für eventuelle Datenverluste, kann           │}
  24. {│   KEINERLEI HAFTUNG übernommen werden!                                  │}
  25. {│                                                                         │}
  26. {│                                                                         │}
  27. {│                                                                         │}
  28. {│                                                                         │}
  29. {│   Compiliert wird mit TURBO-PASCAL 6.0                                  │}
  30. {│                                                                         │}
  31. {└─────────────────────────────────────────────────────────────────────────┘}
  32.  
  33. PROGRAM Packet_HOSTMODE_Terminal(Input,Output);
  34. {$M 22000,0,655360}
  35. {$F+}
  36.  
  37.  
  38. USES    OVERLAY,
  39.         CRT,
  40.         DOS,
  41.  
  42.         TOPEMS,
  43.         TOPXMS,
  44.         TOPDEFS,
  45.         TOPACT,
  46.         TOPACT1,
  47.  
  48.         TOPOVR,
  49.         TOPOVR1,
  50.         TOPOVR2,
  51.         TOPOVR3,
  52.         TOPOVR4;
  53.  
  54.  
  55. {$O TOPOVR}
  56. {$O TOPOVR1}
  57. {$O TOPOVR2}
  58. {$O TOPOVR3}
  59. {$O TOPOVR4}
  60.  
  61.  
  62. Var   i  : Integer;
  63.  
  64. BEGIN   (****  H A U P T P R O G R A M M  ****)
  65.   Check_TOP_Loaded;
  66.  
  67.   Old_IntMask := Port[$21];
  68.  
  69.   Inline($FA);
  70.   FillChar(neue_Table,SizeOf(neue_Table),$FF);
  71.   alte_Table := Ptr(PrefixSeg,$18);
  72.   move(alte_Table^[1],neue_Table[1],20);
  73.  
  74.   TabAdresse := Ptr(PrefixSeg,$34);
  75.   TabAdresse^ := @neue_Table[1];
  76.   TabLaenge := Ptr(PrefixSeg,$32);
  77.   TabLaenge^ := maxTable;
  78.   Inline($FB);
  79.  
  80.   SysPfad := UpCaseStr(ParamStr(0));          { Pfad für Config-Dateien }
  81.   OvrDatei := SysPfad;
  82.   While (length(SysPfad) > 0) and (SysPfad[length(SysPfad)] <> BS)
  83.         do delete(SysPfad,length(SysPfad),1);
  84.   if (Length(SysPfad) > 0) and (SysPfad[Length(SysPfad)] <> BS)
  85.     then SysPfad := SysPfad + BS;
  86.  
  87.   Sys1Pfad := SysPfad;
  88.  
  89.   OvrInit(OvrDatei);
  90.   if OvrResult <> 0 then
  91.   begin
  92.     Writeln;
  93.     Writeln('Failure with ',OvrDatei,' !');
  94.     PRG_Stoppen(0);
  95.   end;
  96.  
  97.   ParamZeile := Ptr(PrefixSeg,$80);
  98.   UebergabeAuswert;
  99.  
  100.   if Nutze_XMS then Init_XMS;
  101.   if Nutze_EMS then Init_EMS;
  102.  
  103.   if Nutze_EMS and OVRtoEMS then
  104.   begin
  105.     OvrInitEMS;
  106.     i := OvrResult;
  107.     if i = 0 then Mstr := EmsStr + OvrDatei + B1 + 'load into EMS'
  108.              else Mstr := EmsStr + OvrDatei + B1 + 'F-Nr.' + GL + int_str(i);
  109.   end;
  110.  
  111.   OrigExit := ExitProc;
  112.   ExitProc := @TOP_Exit;
  113.  
  114.   FreeRam := $A0000 - Adr_absolut(Ptr(PrefixSeg,0));
  115.  
  116.   GetMem(G,SizeOf(G^));
  117.   FillChar(G^,SizeOf(G^),0);
  118.  
  119.   CheckBreak := false;                { kein Abbruch durch ctrl-C }
  120.   GetCBreak(BreakStatus);             { Break-Status holen und retten }
  121.   SetCBreak(false);                   { Break off }
  122.  
  123.   CheckSnow := false;
  124.   GetVideoMode;
  125.   StartVideoMode := LastMode;         { derzeitigen VideoMode merken }
  126.   LastModeStore := StartVideoMode;
  127.  
  128.   if Hercules then maxZ := 25
  129.               else maxZ := WindMax div 256 + 1;
  130.  
  131.   Cursor_aus;
  132.   TextAttr := StartColor;
  133.   ClrScr;
  134.  
  135.   GenCrcTab;
  136.  
  137.   if CRC_PR_EXE then
  138.   begin
  139.     NormVideo;
  140.     ClrScr;
  141.     SetzeCursor(1,25);
  142.     Mstr := ParamStr(0);
  143.     CRC_Datei(Mstr);
  144.     Writeln(Mstr);
  145.     Writeln;
  146.     PRG_Stoppen(0);
  147.   end;
  148.  
  149.   Var_Init(99); { Erstmal nur globale Variablen initialisieren }
  150.  
  151.   Assign(G^.BootFile,Sys1Pfad + BootDatei);
  152.   FiResult := RewriteTxt(G^.BootFile);
  153.   Writeln(G^.BootFile,'Version',B1 + GL + B1 + Version);
  154.   Writeln(G^.BootFile,'Last Edit at' + B1 + LastEdit);
  155.   Writeln(G^.BootFile,'OVR' + DP + B1 + OvrDatei);
  156.   if Mstr > '' then Writeln(G^.BootFile,Mstr);
  157.  
  158.   Cursor_aus;
  159.   Emblem_zeigen;
  160.   ConfigLesen;
  161.   Infos_Lesen;
  162.   Strings_Lesen;
  163.  
  164.   Merker_Conn_Lesen;
  165.   Merker_File_Lesen;
  166.   Fenster_Berechnen;
  167.  
  168.   AttributFile_Lesen;
  169.   ESC_Lesen;
  170.   QRG_Lesen;
  171.   REM_Lesen;
  172.   PWD_Lesen;
  173.   HELP_Lesen;
  174.   MAK_Lesen;
  175.   if (SSAV > 0) then Puffer_lesen;
  176.  
  177.   max_path_ermitteln;
  178.  
  179.   Switch_VGA_Mono;
  180.   ColorItensity(HighCol);
  181.   maxZ := WindMax div 256 + 1;
  182.   Cursor_aus;
  183.  
  184.   show := 0;
  185.   for i := 1 to 4 do StatusOut(0,1,i,Attrib[9],ConstStr(B1,20));
  186.   Neu_Bild;
  187.   VorCurEnd;
  188.  
  189.   M_aus(Attrib[28],^J);
  190.   FiResult := ResetTxt(G^.BootFile);
  191.   While not Eof(G^.BootFile) do
  192.   begin
  193.     Readln(G^.BootFile,Mstr);
  194.     M_aus(Attrib[28],Star + Mstr + ^J);
  195.   end;
  196.   M_aus(Attrib[28],^J);
  197.   FiResult := CloseTxt(G^.BootFile);
  198.  
  199.   V24_Init;
  200.   Ini_Start_Tnc;
  201.   if MhKill then FillChar(MH^,SizeOf(MH^),0);
  202.  
  203.   K[0]^.TncNummer := 1;
  204.  
  205.   SwitchChannel(FirstConCh);
  206.  
  207.   if Exists(G^.MakroPfad + AutoExecFile) then
  208.   begin
  209.     MakroInit;
  210.     Makro_aktivieren(G^.MakroPfad + AutoExecFile);
  211.   end;
  212.  
  213.   Repeat  (****  H A U P T S C H L E I F E  ****)
  214.     Check_Keyboard;
  215.     Uhr_aus;
  216.  
  217.     If Idle then
  218.     begin
  219.       if (Idle_TCount > 0) and (Idle_TMerk <> TimerTick) then
  220.       begin
  221.         Idle_TMerk := TimerTick;
  222.         dec(Idle_TCount);
  223.       end;
  224.  
  225.       if Idle_Count > 0 then dec(Idle_Count);
  226.  
  227.       if (Idle_TCount = 0) and ((Idle_Pos and (Idle_Count = 0)) or
  228.                                 (not Idle_Pos and (Idle_Count > 0))) then
  229.       begin
  230.         IdleDOS;
  231.         if Idle_Pos then Idle_Count := Idle_Anz;
  232.       end;
  233.     end;
  234.  
  235.     if not Idle or
  236.        Idle and (Idle_Pos or
  237.        (not Idle_Pos and (Idle_Count = 0) and (Idle_TCount = 0))) then
  238.     begin
  239.       if Idle and not Idle_Pos then Idle_Count := Idle_Anz;
  240.       if polling then TNCs_Pollen;
  241.       set_Hardwarecursor(show);
  242.     end;
  243.   Until QRT;   (*  E N D E  der  H A U P T S C H L E I F E  *)
  244.  
  245.   TschuessFenster;
  246.   TncIni(1);
  247.   Abschluss_TOP;
  248.  
  249.   Init_HardDrive;
  250.   ExitProc := OrigExit;
  251. End.
  252.